package Fases
{
	import flash.display.DisplayObjectContainer;
	import flash.display.MovieClip;
	import TangoGames.Fases.FaseBase;
	import TangoGames.Fases.FaseControle;
	import Fases.*;
	import TangoGames.Fases.FaseEvent;
	import TangoGames.Fases.FaseMainInterface;
	import TangoGames.Fases.FaseParamentos;
	import TangoGames.Menus.MenuBase;
	import TangoGames.Menus.MenuEvent;
	/**
	 * ...
	 * @author Arthur&Honorato
	 */
	public class FasesJogo extends FaseControle 
	{
		//private var FD_dados		:FasesDados;
		
		private var MC_Retry:MovieClip;
		private var MC_Voltarmenu:MovieClip;
		private var MC_Restart:MovieClip;
		private var MC_Continue:MovieClip;
		private var MC_GameOver:MovieClip;
		
		public function FasesJogo(_mainapp:DisplayObjectContainer) 
		{
			super(_mainapp);
			
			//carrega Fase Dados
			//FD_dados = new FasesDados();
			
			//primeira fase
			adicionaFase(1, "Go to kitchen", Fase01);
			
			faseBloqueada(1, false);
			
			//adiciona segunda fase
			adicionaFase(2, "Go to the bathroom", Fase01);
			
			//if (FD_dados.faseLiberada >= 1) faseBloqueada(2, false);
			
			MC_Retry = new PauseRestart();
			MC_Continue = new PauseContinue();
			MC_Voltarmenu = new OverBack();
			MC_Restart = new PauseRestart();
			MC_GameOver = new GameOver();
		}	
		
		override public function carregaFaseParametros(_faseID:uint, _nivel:uint):FaseParamentos
		{
			return new FasesJogoParametros(_faseID,_nivel);
		}
		
		
		/**
		 * 
		 * @param	e
		 */
		override protected function controleInterrupcaoFase(e:FaseEvent):void 
		{	var mn:MenuBase = new MenuBase("MenuControle", criaFundo());
			switch (e.type) {
				case FaseEvent.FASE_PAUSA:
					mn.adicionaOpcao("Continue",0,null,MC_Continue)
					mn.adicionaOpcao("Restart", 1, null, MC_Restart);
					mn.adicionaOpcao("Back to Menu", 2, null, MC_Voltarmenu);
				break;
				case FaseEvent.FASE_FIMDEJOGO:
					mn.adicionaOpcao("Game Over", 0 ,null,MC_GameOver,false);
					mn.adicionaOpcao("Restart", 1,null, MC_Restart);
					mn.adicionaOpcao("Back to Menu", 2, null, MC_Voltarmenu);
				break;
			case FaseEvent.FASE_CONCLUIDA:
					if (!destravaProximaFase(FaseBase(e.currentTarget).faseID , FaseBase(e.currentTarget).nivel)) {
						ultimaFaseOK = true;
						removeFaseCorrente();
						FaseMainInterface(mainapp).manipulaSairFases();
						return;
					}
					mn.adicionaOpcao("Play Again", 1,null,MC_Restart);
					mn.adicionaOpcao("Next Stage", 4);
					mn.adicionaOpcao("Back to Menu", 2,null,MC_Voltarmenu);
				break;
					
				default:
			}
			mainapp.addChild(mn);
			mn.addEventListener(MenuEvent.OPCAO_SELECIONADA, manipulaOpcao, false,0, true);
		}
		
	}

}